import { defineConfig, loadEnv } from 'vite';

export default defineConfig(({ mode }) => {
  // 加载环境变量
  const env = loadEnv(mode, process.cwd(), '');

  return {
    // 基础路径配置
    base: mode === 'production' ? '/prod/' : mode === 'test' ? '/test/' : '/',

    // 构建配置
    build: {
      outDir: 'dist',
      assetsDir: 'assets',
      // 生成 sourcemap
      sourcemap: mode !== 'production',
      // 代码压缩
      minify: mode === 'production' ? 'terser' : false,
      // Terser 配置
      terserOptions: {
        compress: {
          drop_console: mode === 'production',
          drop_debugger: mode === 'production'
        }
      },
      // 块大小警告限制
      chunkSizeWarningLimit: 1000,
      // Rollup 配置
      rollupOptions: {
        output: {
          // 静态资源分类打包
          chunkFileNames: 'assets/js/[name]-[hash].js',
          entryFileNames: 'assets/js/[name]-[hash].js',
          assetFileNames: 'assets/[ext]/[name]-[hash].[ext]'
        }
      }
    },

    // 开发服务器配置
    server: {
      port: 3000,
      host: '0.0.0.0',
      open: true,
      cors: true,
      // 代理配置（如果需要）
      proxy: {
        '/api': {
          target: 'http://localhost:8080',
          changeOrigin: true,
          rewrite: (path) => path.replace(/^\/api/, '')
        }
      }
    },

    // 预览服务器配置
    preview: {
      port: 4173,
      host: '0.0.0.0'
    },

    // 环境变量配置
    define: {
      'import.meta.env.VITE_APP_VERSION': JSON.stringify(env.VITE_APP_VERSION || '1.0.0'),
      'import.meta.env.VITE_BUILD_TIME': JSON.stringify(env.VITE_BUILD_TIME || new Date().toISOString()),
      'import.meta.env.VITE_COMMIT_SHA': JSON.stringify(env.VITE_COMMIT_SHA || 'unknown'),
      'import.meta.env.VITE_PIPELINE_ID': JSON.stringify(env.VITE_PIPELINE_ID || 'unknown')
    }
  };
});

